<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Structure and Interpretation of Computer Programs, 2e: Top</title>

<meta name="description" content="Structure and Interpretation of Computer Programs, 2e: Top" />
<meta name="keywords" content="Structure and Interpretation of Computer Programs, 2e: Top" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="Generator" content="texi2any" />
<meta charset="utf-8" />
<link href="#Top" rel="start" title="Top" />
<link href="Term-Index.xhtml#Term-Index" rel="index" title="Term Index" />
<link href="#SEC_Contents" rel="contents" title="Table of Contents" />
<link href="../index.xhtml" rel="prev" title="(dir)" />
<link href="UTF.xhtml#UTF" rel="next" title="UTF" />

<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="css/prettify.css" rel="stylesheet" type="text/css" />
</head>

<body>
<section><span class="top jump" title="Jump to top"><a href="#pagetop" accesskey="t">⇡</a></span><a id="pagetop"></a>
<h1 class="titlefont">Structure and Interpretation<br /> of Computer Programs</h1>

<div class="subtitle"><abbr>Second Edition</abbr><br /> Unofficial Texinfo Format 2.andresraba6.6</div>

<strong>Harold Abelson and Gerald Jay Sussman with Julie Sussman, foreword by Alan J. Perlis</strong><br />

<p>©1996 by The Massachusetts Institute of Technology
</p>

<object style="width: 2.42ex; height: 2.42ex;" data="fig/icons/cc.std.svg" type="image/svg+xml">SVG</object>

<object style="width: 2.42ex; height: 2.42ex;" data="fig/icons/by.std.svg" type="image/svg+xml">SVG</object>

<object style="width: 2.42ex; height: 2.42ex;" data="fig/icons/sa.std.svg" type="image/svg+xml">SVG</object>

<p>This work is licensed under a Creative Commons Attribution-ShareAlike 4.0
International License (<a href="http://creativecommons.org/licenses/by-sa/4.0/"><abbr>CC BY-SA 4.0</abbr></a>).
Based on a work at <a href="http://mitpress.mit.edu/sicp/">mitpress.mit.edu</a>.
</p>
<p>The <abbr>MIT</abbr> Press<br />
Cambridge, Massachusetts<br /> 
London, England
</p>
<p>McGraw-Hill Book Company<br />
New York, St. Louis, San Francisco,<br />
Montreal, Toronto
</p>
<p>This book is one of a series of texts written by faculty of the Electrical
Engineering and Computer Science Department at the Massachusetts Institute of
Technology.  It was edited and produced by The <abbr>MIT</abbr> Press under a
joint production-distribution arrangement with the McGraw-Hill Book Company.
</p>
<p>Unofficial Texinfo Format <a href="http://sicpebook.wordpress.com">2.andresraba6.6</a> (September 16, 2015),
based on <a href="http://www.neilvandyke.org/sicp-texi/">2.neilvandyke4</a> (January 10, 2007).
</p>


<a id="SEC_Overview"></a>
<h2 class="shortcontents-heading">Short Table of Contents</h2>

<div class="shortcontents">
<ul class="no-bullet">
<li><a id="stoc-Unofficial-Texinfo-Format" href="#toc-Unofficial-Texinfo-Format">Unofficial Texinfo Format</a></li>
<li><a id="stoc-Dedication-1" href="#toc-Dedication-1">Dedication</a></li>
<li><a id="stoc-Foreword-1" href="#toc-Foreword-1">Foreword</a></li>
<li><a id="stoc-Preface-to-the-Second-Edition" href="#toc-Preface-to-the-Second-Edition">Preface to the Second Edition</a></li>
<li><a id="stoc-Preface-to-the-First-Edition" href="#toc-Preface-to-the-First-Edition">Preface to the First Edition</a></li>
<li><a id="stoc-Acknowledgments-1" href="#toc-Acknowledgments-1">Acknowledgments</a></li>
<li><a id="stoc-Building-Abstractions-with-Procedures" href="#toc-Building-Abstractions-with-Procedures">1 Building Abstractions with Procedures</a></li>
<li><a id="stoc-Building-Abstractions-with-Data" href="#toc-Building-Abstractions-with-Data">2 Building Abstractions with Data</a></li>
<li><a id="stoc-Modularity_002c-Objects_002c-and-State" href="#toc-Modularity_002c-Objects_002c-and-State">3 Modularity, Objects, and State</a></li>
<li><a id="stoc-Metalinguistic-Abstraction" href="#toc-Metalinguistic-Abstraction">4 Metalinguistic Abstraction</a></li>
<li><a id="stoc-Computing-with-Register-Machines" href="#toc-Computing-with-Register-Machines">5 Computing with Register Machines</a></li>
<li><a id="stoc-References-1" href="#toc-References-1">References</a></li>
<li><a id="stoc-List-of-Exercises" href="#toc-List-of-Exercises">List of Exercises</a></li>
<li><a id="stoc-List-of-Figures" href="#toc-List-of-Figures">List of Figures</a></li>
<li><a id="stoc-Term-Index-1" href="#toc-Term-Index-1">Term Index</a></li>
<li><a id="stoc-Colophon-1" href="#toc-Colophon-1">Colophon</a></li>

</ul>
</div>











<a id="SEC_Contents"></a>
<h2 class="contents-heading">Table of Contents</h2>

<div class="contents">
<ul class="no-bullet">
<li><a id="toc-Unofficial-Texinfo-Format" href="UTF.xhtml#UTF">Unofficial Texinfo Format</a></li>
<li><a id="toc-Dedication-1" href="Dedication.xhtml#Dedication">Dedication</a></li>
<li><a id="toc-Foreword-1" href="Foreword.xhtml#Foreword">Foreword</a></li>
<li><a id="toc-Preface-to-the-Second-Edition" href="Preface.xhtml#Preface">Preface to the Second Edition</a></li>
<li><a id="toc-Preface-to-the-First-Edition" href="Preface-1e.xhtml#Preface-1e">Preface to the First Edition</a></li>
<li><a id="toc-Acknowledgments-1" href="Acknowledgments.xhtml#Acknowledgments">Acknowledgments</a></li>
<li><a id="toc-Building-Abstractions-with-Procedures" href="Chapter-1.xhtml#Chapter-1">1 Building Abstractions with Procedures</a>
<ul class="no-bullet">
  <li><a id="toc-The-Elements-of-Programming" href="1_002e1.xhtml#g_t1_002e1">1.1 The Elements of Programming</a>
  <ul class="no-bullet">
    <li><a id="toc-Expressions" href="1_002e1.xhtml#g_t1_002e1_002e1">1.1.1 Expressions</a></li>
    <li><a id="toc-Naming-and-the-Environment" href="1_002e1.xhtml#g_t1_002e1_002e2">1.1.2 Naming and the Environment</a></li>
    <li><a id="toc-Evaluating-Combinations" href="1_002e1.xhtml#g_t1_002e1_002e3">1.1.3 Evaluating Combinations</a></li>
    <li><a id="toc-Compound-Procedures" href="1_002e1.xhtml#g_t1_002e1_002e4">1.1.4 Compound Procedures</a></li>
    <li><a id="toc-The-Substitution-Model-for-Procedure-Application" href="1_002e1.xhtml#g_t1_002e1_002e5">1.1.5 The Substitution Model for Procedure Application</a></li>
    <li><a id="toc-Conditional-Expressions-and-Predicates" href="1_002e1.xhtml#g_t1_002e1_002e6">1.1.6 Conditional Expressions and Predicates</a></li>
    <li><a id="toc-Example_003a-Square-Roots-by-Newton_0027s-Method" href="1_002e1.xhtml#g_t1_002e1_002e7">1.1.7 Example: Square Roots by Newton’s Method</a></li>
    <li><a id="toc-Procedures-as-Black_002dBox-Abstractions" href="1_002e1.xhtml#g_t1_002e1_002e8">1.1.8 Procedures as Black-Box Abstractions</a></li>
  </ul></li>
  <li><a id="toc-Procedures-and-the-Processes-They-Generate" href="1_002e2.xhtml#g_t1_002e2">1.2 Procedures and the Processes They Generate</a>
  <ul class="no-bullet">
    <li><a id="toc-Linear-Recursion-and-Iteration" href="1_002e2.xhtml#g_t1_002e2_002e1">1.2.1 Linear Recursion and Iteration</a></li>
    <li><a id="toc-Tree-Recursion" href="1_002e2.xhtml#g_t1_002e2_002e2">1.2.2 Tree Recursion</a></li>
    <li><a id="toc-Orders-of-Growth" href="1_002e2.xhtml#g_t1_002e2_002e3">1.2.3 Orders of Growth</a></li>
    <li><a id="toc-Exponentiation" href="1_002e2.xhtml#g_t1_002e2_002e4">1.2.4 Exponentiation</a></li>
    <li><a id="toc-Greatest-Common-Divisors" href="1_002e2.xhtml#g_t1_002e2_002e5">1.2.5 Greatest Common Divisors</a></li>
    <li><a id="toc-Example_003a-Testing-for-Primality" href="1_002e2.xhtml#g_t1_002e2_002e6">1.2.6 Example: Testing for Primality</a></li>
  </ul></li>
  <li><a id="toc-Formulating-Abstractions-with-Higher_002dOrder-Procedures" href="1_002e3.xhtml#g_t1_002e3">1.3 Formulating Abstractions with Higher-Order Procedures</a>
  <ul class="no-bullet">
    <li><a id="toc-Procedures-as-Arguments" href="1_002e3.xhtml#g_t1_002e3_002e1">1.3.1 Procedures as Arguments</a></li>
    <li><a id="toc-Constructing-Procedures-Using-Lambda" href="1_002e3.xhtml#g_t1_002e3_002e2">1.3.2 Constructing Procedures Using <code>Lambda</code></a></li>
    <li><a id="toc-Procedures-as-General-Methods" href="1_002e3.xhtml#g_t1_002e3_002e3">1.3.3 Procedures as General Methods</a></li>
    <li><a id="toc-Procedures-as-Returned-Values" href="1_002e3.xhtml#g_t1_002e3_002e4">1.3.4 Procedures as Returned Values</a></li>
  </ul></li>
</ul></li>
<li><a id="toc-Building-Abstractions-with-Data" href="Chapter-2.xhtml#Chapter-2">2 Building Abstractions with Data</a>
<ul class="no-bullet">
  <li><a id="toc-Introduction-to-Data-Abstraction" href="2_002e1.xhtml#g_t2_002e1">2.1 Introduction to Data Abstraction</a>
  <ul class="no-bullet">
    <li><a id="toc-Example_003a-Arithmetic-Operations-for-Rational-Numbers" href="2_002e1.xhtml#g_t2_002e1_002e1">2.1.1 Example: Arithmetic Operations for Rational Numbers</a></li>
    <li><a id="toc-Abstraction-Barriers" href="2_002e1.xhtml#g_t2_002e1_002e2">2.1.2 Abstraction Barriers</a></li>
    <li><a id="toc-What-Is-Meant-by-Data_003f" href="2_002e1.xhtml#g_t2_002e1_002e3">2.1.3 What Is Meant by Data?</a></li>
    <li><a id="toc-Extended-Exercise_003a-Interval-Arithmetic" href="2_002e1.xhtml#g_t2_002e1_002e4">2.1.4 Extended Exercise: Interval Arithmetic</a></li>
  </ul></li>
  <li><a id="toc-Hierarchical-Data-and-the-Closure-Property" href="2_002e2.xhtml#g_t2_002e2">2.2 Hierarchical Data and the Closure Property</a>
  <ul class="no-bullet">
    <li><a id="toc-Representing-Sequences" href="2_002e2.xhtml#g_t2_002e2_002e1">2.2.1 Representing Sequences</a></li>
    <li><a id="toc-Hierarchical-Structures" href="2_002e2.xhtml#g_t2_002e2_002e2">2.2.2 Hierarchical Structures</a></li>
    <li><a id="toc-Sequences-as-Conventional-Interfaces" href="2_002e2.xhtml#g_t2_002e2_002e3">2.2.3 Sequences as Conventional Interfaces</a></li>
    <li><a id="toc-Example_003a-A-Picture-Language" href="2_002e2.xhtml#g_t2_002e2_002e4">2.2.4 Example: A Picture Language</a></li>
  </ul></li>
  <li><a id="toc-Symbolic-Data" href="2_002e3.xhtml#g_t2_002e3">2.3 Symbolic Data</a>
  <ul class="no-bullet">
    <li><a id="toc-Quotation" href="2_002e3.xhtml#g_t2_002e3_002e1">2.3.1 Quotation</a></li>
    <li><a id="toc-Example_003a-Symbolic-Differentiation" href="2_002e3.xhtml#g_t2_002e3_002e2">2.3.2 Example: Symbolic Differentiation</a></li>
    <li><a id="toc-Example_003a-Representing-Sets" href="2_002e3.xhtml#g_t2_002e3_002e3">2.3.3 Example: Representing Sets</a></li>
    <li><a id="toc-Example_003a-Huffman-Encoding-Trees" href="2_002e3.xhtml#g_t2_002e3_002e4">2.3.4 Example: Huffman Encoding Trees</a></li>
  </ul></li>
  <li><a id="toc-Multiple-Representations-for-Abstract-Data" href="2_002e4.xhtml#g_t2_002e4">2.4 Multiple Representations for Abstract Data</a>
  <ul class="no-bullet">
    <li><a id="toc-Representations-for-Complex-Numbers" href="2_002e4.xhtml#g_t2_002e4_002e1">2.4.1 Representations for Complex Numbers</a></li>
    <li><a id="toc-Tagged-data" href="2_002e4.xhtml#g_t2_002e4_002e2">2.4.2 Tagged data</a></li>
    <li><a id="toc-Data_002dDirected-Programming-and-Additivity" href="2_002e4.xhtml#g_t2_002e4_002e3">2.4.3 Data-Directed Programming and Additivity</a></li>
  </ul></li>
  <li><a id="toc-Systems-with-Generic-Operations" href="2_002e5.xhtml#g_t2_002e5">2.5 Systems with Generic Operations</a>
  <ul class="no-bullet">
    <li><a id="toc-Generic-Arithmetic-Operations" href="2_002e5.xhtml#g_t2_002e5_002e1">2.5.1 Generic Arithmetic Operations</a></li>
    <li><a id="toc-Combining-Data-of-Different-Types" href="2_002e5.xhtml#g_t2_002e5_002e2">2.5.2 Combining Data of Different Types</a></li>
    <li><a id="toc-Example_003a-Symbolic-Algebra" href="2_002e5.xhtml#g_t2_002e5_002e3">2.5.3 Example: Symbolic Algebra</a></li>
  </ul></li>
</ul></li>
<li><a id="toc-Modularity_002c-Objects_002c-and-State" href="Chapter-3.xhtml#Chapter-3">3 Modularity, Objects, and State</a>
<ul class="no-bullet">
  <li><a id="toc-Assignment-and-Local-State" href="3_002e1.xhtml#g_t3_002e1">3.1 Assignment and Local State</a>
  <ul class="no-bullet">
    <li><a id="toc-Local-State-Variables" href="3_002e1.xhtml#g_t3_002e1_002e1">3.1.1 Local State Variables</a></li>
    <li><a id="toc-The-Benefits-of-Introducing-Assignment" href="3_002e1.xhtml#g_t3_002e1_002e2">3.1.2 The Benefits of Introducing Assignment</a></li>
    <li><a id="toc-The-Costs-of-Introducing-Assignment" href="3_002e1.xhtml#g_t3_002e1_002e3">3.1.3 The Costs of Introducing Assignment</a></li>
  </ul></li>
  <li><a id="toc-The-Environment-Model-of-Evaluation" href="3_002e2.xhtml#g_t3_002e2">3.2 The Environment Model of Evaluation</a>
  <ul class="no-bullet">
    <li><a id="toc-The-Rules-for-Evaluation" href="3_002e2.xhtml#g_t3_002e2_002e1">3.2.1 The Rules for Evaluation</a></li>
    <li><a id="toc-Applying-Simple-Procedures" href="3_002e2.xhtml#g_t3_002e2_002e2">3.2.2 Applying Simple Procedures</a></li>
    <li><a id="toc-Frames-as-the-Repository-of-Local-State" href="3_002e2.xhtml#g_t3_002e2_002e3">3.2.3 Frames as the Repository of Local State</a></li>
    <li><a id="toc-Internal-Definitions" href="3_002e2.xhtml#g_t3_002e2_002e4">3.2.4 Internal Definitions</a></li>
  </ul></li>
  <li><a id="toc-Modeling-with-Mutable-Data" href="3_002e3.xhtml#g_t3_002e3">3.3 Modeling with Mutable Data</a>
  <ul class="no-bullet">
    <li><a id="toc-Mutable-List-Structure" href="3_002e3.xhtml#g_t3_002e3_002e1">3.3.1 Mutable List Structure</a></li>
    <li><a id="toc-Representing-Queues" href="3_002e3.xhtml#g_t3_002e3_002e2">3.3.2 Representing Queues</a></li>
    <li><a id="toc-Representing-Tables" href="3_002e3.xhtml#g_t3_002e3_002e3">3.3.3 Representing Tables</a></li>
    <li><a id="toc-A-Simulator-for-Digital-Circuits" href="3_002e3.xhtml#g_t3_002e3_002e4">3.3.4 A Simulator for Digital Circuits</a></li>
    <li><a id="toc-Propagation-of-Constraints" href="3_002e3.xhtml#g_t3_002e3_002e5">3.3.5 Propagation of Constraints</a></li>
  </ul></li>
  <li><a id="toc-Concurrency_003a-Time-Is-of-the-Essence" href="3_002e4.xhtml#g_t3_002e4">3.4 Concurrency: Time Is of the Essence</a>
  <ul class="no-bullet">
    <li><a id="toc-The-Nature-of-Time-in-Concurrent-Systems" href="3_002e4.xhtml#g_t3_002e4_002e1">3.4.1 The Nature of Time in Concurrent Systems</a></li>
    <li><a id="toc-Mechanisms-for-Controlling-Concurrency" href="3_002e4.xhtml#g_t3_002e4_002e2">3.4.2 Mechanisms for Controlling Concurrency</a></li>
  </ul></li>
  <li><a id="toc-Streams" href="3_002e5.xhtml#g_t3_002e5">3.5 Streams</a>
  <ul class="no-bullet">
    <li><a id="toc-Streams-Are-Delayed-Lists" href="3_002e5.xhtml#g_t3_002e5_002e1">3.5.1 Streams Are Delayed Lists</a></li>
    <li><a id="toc-Infinite-Streams" href="3_002e5.xhtml#g_t3_002e5_002e2">3.5.2 Infinite Streams</a></li>
    <li><a id="toc-Exploiting-the-Stream-Paradigm" href="3_002e5.xhtml#g_t3_002e5_002e3">3.5.3 Exploiting the Stream Paradigm</a></li>
    <li><a id="toc-Streams-and-Delayed-Evaluation" href="3_002e5.xhtml#g_t3_002e5_002e4">3.5.4 Streams and Delayed Evaluation</a></li>
    <li><a id="toc-Modularity-of-Functional-Programs-and-Modularity-of-Objects" href="3_002e5.xhtml#g_t3_002e5_002e5">3.5.5 Modularity of Functional Programs and Modularity of Objects</a></li>
  </ul></li>
</ul></li>
<li><a id="toc-Metalinguistic-Abstraction" href="Chapter-4.xhtml#Chapter-4">4 Metalinguistic Abstraction</a>
<ul class="no-bullet">
  <li><a id="toc-The-Metacircular-Evaluator" href="4_002e1.xhtml#g_t4_002e1">4.1 The Metacircular Evaluator</a>
  <ul class="no-bullet">
    <li><a id="toc-The-Core-of-the-Evaluator" href="4_002e1.xhtml#g_t4_002e1_002e1">4.1.1 The Core of the Evaluator</a></li>
    <li><a id="toc-Representing-Expressions" href="4_002e1.xhtml#g_t4_002e1_002e2">4.1.2 Representing Expressions</a></li>
    <li><a id="toc-Evaluator-Data-Structures" href="4_002e1.xhtml#g_t4_002e1_002e3">4.1.3 Evaluator Data Structures</a></li>
    <li><a id="toc-Running-the-Evaluator-as-a-Program" href="4_002e1.xhtml#g_t4_002e1_002e4">4.1.4 Running the Evaluator as a Program</a></li>
    <li><a id="toc-Data-as-Programs" href="4_002e1.xhtml#g_t4_002e1_002e5">4.1.5 Data as Programs</a></li>
    <li><a id="toc-Internal-Definitions-1" href="4_002e1.xhtml#g_t4_002e1_002e6">4.1.6 Internal Definitions</a></li>
    <li><a id="toc-Separating-Syntactic-Analysis-from-Execution" href="4_002e1.xhtml#g_t4_002e1_002e7">4.1.7 Separating Syntactic Analysis from Execution</a></li>
  </ul></li>
  <li><a id="toc-Variations-on-a-Scheme-_002d_002d_002d-Lazy-Evaluation" href="4_002e2.xhtml#g_t4_002e2">4.2 Variations on a Scheme — Lazy Evaluation</a>
  <ul class="no-bullet">
    <li><a id="toc-Normal-Order-and-Applicative-Order" href="4_002e2.xhtml#g_t4_002e2_002e1">4.2.1 Normal Order and Applicative Order</a></li>
    <li><a id="toc-An-Interpreter-with-Lazy-Evaluation" href="4_002e2.xhtml#g_t4_002e2_002e2">4.2.2 An Interpreter with Lazy Evaluation</a></li>
    <li><a id="toc-Streams-as-Lazy-Lists" href="4_002e2.xhtml#g_t4_002e2_002e3">4.2.3 Streams as Lazy Lists</a></li>
  </ul></li>
  <li><a id="toc-Variations-on-a-Scheme-_002d_002d_002d-Nondeterministic-Computing" href="4_002e3.xhtml#g_t4_002e3">4.3 Variations on a Scheme — Nondeterministic Computing</a>
  <ul class="no-bullet">
    <li><a id="toc-Amb-and-Search" href="4_002e3.xhtml#g_t4_002e3_002e1">4.3.1 Amb and Search</a></li>
    <li><a id="toc-Examples-of-Nondeterministic-Programs" href="4_002e3.xhtml#g_t4_002e3_002e2">4.3.2 Examples of Nondeterministic Programs</a></li>
    <li><a id="toc-Implementing-the-Amb-Evaluator" href="4_002e3.xhtml#g_t4_002e3_002e3">4.3.3 Implementing the <code>Amb</code> Evaluator</a></li>
  </ul></li>
  <li><a id="toc-Logic-Programming" href="4_002e4.xhtml#g_t4_002e4">4.4 Logic Programming</a>
  <ul class="no-bullet">
    <li><a id="toc-Deductive-Information-Retrieval" href="4_002e4.xhtml#g_t4_002e4_002e1">4.4.1 Deductive Information Retrieval</a></li>
    <li><a id="toc-How-the-Query-System-Works" href="4_002e4.xhtml#g_t4_002e4_002e2">4.4.2 How the Query System Works</a></li>
    <li><a id="toc-Is-Logic-Programming-Mathematical-Logic_003f" href="4_002e4.xhtml#g_t4_002e4_002e3">4.4.3 Is Logic Programming Mathematical Logic?</a></li>
    <li><a id="toc-Implementing-the-Query-System" href="4_002e4.xhtml#g_t4_002e4_002e4">4.4.4 Implementing the Query System</a>
    <ul class="no-bullet">
      <li><a id="toc-The-Driver-Loop-and-Instantiation" href="4_002e4.xhtml#g_t4_002e4_002e4_002e1">4.4.4.1 The Driver Loop and Instantiation</a></li>
      <li><a id="toc-The-Evaluator" href="4_002e4.xhtml#g_t4_002e4_002e4_002e2">4.4.4.2 The Evaluator</a></li>
      <li><a id="toc-Finding-Assertions-by-Pattern-Matching" href="4_002e4.xhtml#g_t4_002e4_002e4_002e3">4.4.4.3 Finding Assertions by Pattern Matching</a></li>
      <li><a id="toc-Rules-and-Unification" href="4_002e4.xhtml#g_t4_002e4_002e4_002e4">4.4.4.4 Rules and Unification</a></li>
      <li><a id="toc-Maintaining-the-Data-Base" href="4_002e4.xhtml#g_t4_002e4_002e4_002e5">4.4.4.5 Maintaining the Data Base</a></li>
      <li><a id="toc-Stream-Operations" href="4_002e4.xhtml#g_t4_002e4_002e4_002e6">4.4.4.6 Stream Operations</a></li>
      <li><a id="toc-Query-Syntax-Procedures" href="4_002e4.xhtml#g_t4_002e4_002e4_002e7">4.4.4.7 Query Syntax Procedures</a></li>
      <li><a id="toc-Frames-and-Bindings" href="4_002e4.xhtml#g_t4_002e4_002e4_002e8">4.4.4.8 Frames and Bindings</a></li>
    </ul></li>
  </ul></li>
</ul></li>
<li><a id="toc-Computing-with-Register-Machines" href="Chapter-5.xhtml#Chapter-5">5 Computing with Register Machines</a>
<ul class="no-bullet">
  <li><a id="toc-Designing-Register-Machines" href="5_002e1.xhtml#g_t5_002e1">5.1 Designing Register Machines</a>
  <ul class="no-bullet">
    <li><a id="toc-A-Language-for-Describing-Register-Machines" href="5_002e1.xhtml#g_t5_002e1_002e1">5.1.1 A Language for Describing Register Machines</a></li>
    <li><a id="toc-Abstraction-in-Machine-Design" href="5_002e1.xhtml#g_t5_002e1_002e2">5.1.2 Abstraction in Machine Design</a></li>
    <li><a id="toc-Subroutines" href="5_002e1.xhtml#g_t5_002e1_002e3">5.1.3 Subroutines</a></li>
    <li><a id="toc-Using-a-Stack-to-Implement-Recursion" href="5_002e1.xhtml#g_t5_002e1_002e4">5.1.4 Using a Stack to Implement Recursion</a></li>
    <li><a id="toc-Instruction-Summary" href="5_002e1.xhtml#g_t5_002e1_002e5">5.1.5 Instruction Summary</a></li>
  </ul></li>
  <li><a id="toc-A-Register_002dMachine-Simulator" href="5_002e2.xhtml#g_t5_002e2">5.2 A Register-Machine Simulator</a>
  <ul class="no-bullet">
    <li><a id="toc-The-Machine-Model" href="5_002e2.xhtml#g_t5_002e2_002e1">5.2.1 The Machine Model</a></li>
    <li><a id="toc-The-Assembler" href="5_002e2.xhtml#g_t5_002e2_002e2">5.2.2 The Assembler</a></li>
    <li><a id="toc-Generating-Execution-Procedures-for-Instructions" href="5_002e2.xhtml#g_t5_002e2_002e3">5.2.3 Generating Execution Procedures for Instructions</a></li>
    <li><a id="toc-Monitoring-Machine-Performance" href="5_002e2.xhtml#g_t5_002e2_002e4">5.2.4 Monitoring Machine Performance</a></li>
  </ul></li>
  <li><a id="toc-Storage-Allocation-and-Garbage-Collection" href="5_002e3.xhtml#g_t5_002e3">5.3 Storage Allocation and Garbage Collection</a>
  <ul class="no-bullet">
    <li><a id="toc-Memory-as-Vectors" href="5_002e3.xhtml#g_t5_002e3_002e1">5.3.1 Memory as Vectors</a></li>
    <li><a id="toc-Maintaining-the-Illusion-of-Infinite-Memory" href="5_002e3.xhtml#g_t5_002e3_002e2">5.3.2 Maintaining the Illusion of Infinite Memory</a></li>
  </ul></li>
  <li><a id="toc-The-Explicit_002dControl-Evaluator" href="5_002e4.xhtml#g_t5_002e4">5.4 The Explicit-Control Evaluator</a>
  <ul class="no-bullet">
    <li><a id="toc-The-Core-of-the-Explicit_002dControl-Evaluator" href="5_002e4.xhtml#g_t5_002e4_002e1">5.4.1 The Core of the Explicit-Control Evaluator</a></li>
    <li><a id="toc-Sequence-Evaluation-and-Tail-Recursion" href="5_002e4.xhtml#g_t5_002e4_002e2">5.4.2 Sequence Evaluation and Tail Recursion</a></li>
    <li><a id="toc-Conditionals_002c-Assignments_002c-and-Definitions" href="5_002e4.xhtml#g_t5_002e4_002e3">5.4.3 Conditionals, Assignments, and Definitions</a></li>
    <li><a id="toc-Running-the-Evaluator" href="5_002e4.xhtml#g_t5_002e4_002e4">5.4.4 Running the Evaluator</a></li>
  </ul></li>
  <li><a id="toc-Compilation" href="5_002e5.xhtml#g_t5_002e5">5.5 Compilation</a>
  <ul class="no-bullet">
    <li><a id="toc-Structure-of-the-Compiler" href="5_002e5.xhtml#g_t5_002e5_002e1">5.5.1 Structure of the Compiler</a></li>
    <li><a id="toc-Compiling-Expressions" href="5_002e5.xhtml#g_t5_002e5_002e2">5.5.2 Compiling Expressions</a></li>
    <li><a id="toc-Compiling-Combinations" href="5_002e5.xhtml#g_t5_002e5_002e3">5.5.3 Compiling Combinations</a></li>
    <li><a id="toc-Combining-Instruction-Sequences" href="5_002e5.xhtml#g_t5_002e5_002e4">5.5.4 Combining Instruction Sequences</a></li>
    <li><a id="toc-An-Example-of-Compiled-Code" href="5_002e5.xhtml#g_t5_002e5_002e5">5.5.5 An Example of Compiled Code</a></li>
    <li><a id="toc-Lexical-Addressing" href="5_002e5.xhtml#g_t5_002e5_002e6">5.5.6 Lexical Addressing</a></li>
    <li><a id="toc-Interfacing-Compiled-Code-to-the-Evaluator" href="5_002e5.xhtml#g_t5_002e5_002e7">5.5.7 Interfacing Compiled Code to the Evaluator</a></li>
  </ul></li>
</ul></li>
<li><a id="toc-References-1" href="References.xhtml#References">References</a></li>
<li><a id="toc-List-of-Exercises" href="Exercises.xhtml#Exercises">List of Exercises</a></li>
<li><a id="toc-List-of-Figures" href="Figures.xhtml#Figures">List of Figures</a></li>
<li><a id="toc-Term-Index-1" href="Term-Index.xhtml#Term-Index">Term Index</a></li>
<li><a id="toc-Colophon-1" href="Colophon.xhtml#Colophon">Colophon</a></li>

</ul>
</div>




<a id="Top"></a>
<nav class="header">
<p>
Next: <a href="UTF.xhtml#UTF" accesskey="n" rel="next">UTF</a>, Prev: <a href="../index.xhtml" accesskey="p" rel="prev">(dir)</a>, Up: <a href="../index.xhtml" accesskey="u" rel="prev">(dir)</a>   [<a href="#SEC_Contents" title="Table of contents" accesskey="c" rel="contents">Contents</a>]</p>
</nav>
<h1 class="node-heading">Top</h1>



<nav class="header">
<p>
Next: <a href="UTF.xhtml#UTF" accesskey="n" rel="next">UTF</a>, Prev: <a href="../index.xhtml" accesskey="p" rel="prev">(dir)</a>, Up: <a href="../index.xhtml" accesskey="u" rel="prev">(dir)</a>   [<a href="#SEC_Contents" title="Table of contents" accesskey="c" rel="contents">Contents</a>]</p>
</nav>


</section><span class="bottom jump" title="Jump to bottom"><a href="#pagebottom" accesskey="b">⇣</a></span><a id="pagebottom"></a>
</body>
</html>